package com.kbbywyclient.service;


import com.kbbywyclient.data.model.AddressModel;
import com.kbbywyclient.data.model.BasicInfoModel;
import com.kbbywyclient.data.model.BasicStatusModel;
import com.kbbywyclient.data.model.BoughtTableCreditModel;
import com.kbbywyclient.data.model.BoughtTableModel;
import com.kbbywyclient.data.model.CreditCardBuyModel;
import com.kbbywyclient.data.model.CreditCardIndexModel;
import com.kbbywyclient.data.model.CreditCardTableMenuModel;
import com.kbbywyclient.data.model.CustomerTableModel;
import com.kbbywyclient.data.model.ImageUpdateModel;
import com.kbbywyclient.data.model.InviteShareDesModel;
import com.kbbywyclient.data.model.LoanIndexModel;
import com.kbbywyclient.data.model.LoansBuyModel;
import com.kbbywyclient.data.model.LoansTableMenuModel;
import com.kbbywyclient.data.model.MatchTableModel;
import com.kbbywyclient.data.model.MinePromotionModel;
import com.kbbywyclient.data.model.MineScoreModel;
import com.kbbywyclient.data.model.MobileLoginOfRegistModel;
import com.kbbywyclient.data.model.ModifyOfRegistPassWordModel;
import com.kbbywyclient.data.model.MyBusinessConModel;
import com.kbbywyclient.data.model.MyproductInfoModel;
import com.kbbywyclient.data.model.ProductLibInfoModel;
import com.kbbywyclient.data.model.ProductTableModel;
import com.kbbywyclient.data.model.RegistUserModel;
import com.kbbywyclient.data.model.RetrievePassWordOneModel;
import com.kbbywyclient.data.model.RewardScoreModel;
import com.kbbywyclient.data.model.SalesSettingModel;
import com.kbbywyclient.data.model.ScoreInfoModel;
import com.kbbywyclient.data.model.StatusUpdateModel;
import com.kbbywyclient.data.model.UserModel;
import com.kbbywyclient.data.model.WorkCardImagesModel;
import com.kbbywyclient.data.model.base.BaseModel;

import java.util.List;

import okhttp3.MultipartBody;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Query;
import rx.Observable;

/**
 * Created by Nick on 2017/1/6
 */
public interface ApiService {

    @POST("salesCheckMobile")
    Observable<RegistUserModel> checkMobile(@Query("params") String params); //检测是否注册过（新）

    @POST("salesSendMobileCodeNews")
    Observable<RegistUserModel> sendMobileCodeNews(@Query("params") String params); //发送验证码（新）

    @POST("salesMobileCodeRegister")
    Observable<ModifyOfRegistPassWordModel> getMobileCodeRegister(@Query("params") String params); //注册（新）

    @POST("salesRegisterSetPassWord")
    Observable<MobileLoginOfRegistModel> getRegisterSetPassWord(@Query("params") String params); //提交注册,且登录（新）

    @POST("salesSendMobileCode.do")
    Observable<RegistUserModel> sendOfCheckMobileCode(@Query("params") String params); //发送验证码(旧)

    @POST("salesMobileCodeLogin.do")
    Observable<MobileLoginOfRegistModel> getMobileCodeLoginOfRegist(@Query("params") String params); //手机验证码登录 或 手机注册(旧)

    @POST("salesModifyPassWord.do")
    Observable<ModifyOfRegistPassWordModel> getModifyOfRegistPassWord(@Query("params") String params);//修改密码 或 找回密码 (提交注册  旧)

    @POST("salesLogin.do")
    Observable<UserModel> getUserLogin(@Query("params") String params);//帐号登录

    @POST("salesForgetPassWord.do")
    Observable<RetrievePassWordOneModel> getRetrievePassWordOne(@Query("params") String params);//找回密码第一步

    @POST("loans/loansindex.do")
    Observable<LoanIndexModel> getLoanIndex(@Query("params") String params); //贷款首页

    @POST("loans/apply/loansOrdersMenu")
    Observable<LoansTableMenuModel> getloansOrdersMenu(@Query("params") String params); //贷款申请表筛选菜单

    @POST("loans/apply/loansPPOrderLoans")
    Observable<MatchTableModel> getloansPPOrder(@Query("params") String params); //匹配申请表

    @POST("loans/apply/loansProductOrderLoans")
    Observable<ProductTableModel> getProductOrderLoans(@Query("params") String params); //受理产品的申请表

    @POST("loans/apply/loansBuyOrders")
    Observable<BoughtTableModel> getLoansBuyOrders(@Query("params") String params); //已购买的申请表

    @POST("creditcard/creditcardindex")
    Observable<CreditCardIndexModel> getCreditCardIndex(@Query("params") String params); //信用卡首页

    @POST("creditcard/apply/creditCardOrders")
    Observable<CustomerTableModel> getCreditCardOrders(@Query("params") String params); //客户申请表

    @POST("creditcard/apply/creditCardOrdersMenu")
    Observable<CreditCardTableMenuModel> getCreditCardMenu(@Query("params") String params); //信用卡筛选菜单

    @POST("creditcard/apply/creditCardBuyOrders")
    Observable<BoughtTableCreditModel> getCreditCardBuyOrders(@Query("params") String params); //已购买客户表单

    @POST("creditcard/apply/applyCreditCardBuy")
    Observable<CreditCardBuyModel> getApplyCreditCardBuy(@Query("params") String params); //购买信用卡 表单

    @POST("loans/apply/ApplyLoansBuy")
    Observable<LoansBuyModel> getApplyLoansBuy(@Query("params") String params); //购买贷款 表单

    @POST("creditcard/apply/applyCreditCardUpdate")
    Observable<StatusUpdateModel> getApplyCreditCardUpdate(@Query("params") String params); //修改申请表状态 信用卡

    @POST("loans/apply/orderSalesApplyLoansUpdate")
    Observable<StatusUpdateModel> getApplyLoansUpdate(@Query("params") String params); //修改申请表状态 贷款

    @POST("salesSetting")
    Observable<SalesSettingModel> getSalesSetting(@Query("params") String params); //优惠活动,买断说明,服务条款 下载

    @POST("salesScore.do")
    Observable<MineScoreModel> getMineScoreInfo(@Query("params") String params);//我的积分

    @POST("salesInfo")
    Observable<BasicInfoModel> getSalesInfo(@Query("params") String params);//基本资料

    @POST("addressNew.do")
    Observable<AddressModel> getAddress(@Query("params") String params);//省市区

//    @POST("address")
//    Observable<AddressModel> getAddress(@Query("provinceID") String provinceID, @Query("cityID") String cityID);//省市区

    @POST("salesInfoModify")
    Observable<BaseModel> saveModifyInfo(@Query("params") String params);//基本资料提交修改

    @POST("salesStatus")
    Observable<BasicStatusModel> getBasicStatus(@Query("params") String params);//基本资料 当前状态信息

    @POST("salesSendInfoModify")
    Observable<BaseModel> getModifyTableNotice(@Query("params") String params);//修改表单更新通知

    @POST("loans/shop/shopWorkCardImages")
    Observable<WorkCardImagesModel> getWorkCardImagesLoan(@Query("params") String params);//资质认证状态,及内容 贷款

    @Multipart
    @POST("images/up/SalesImagesUpload")
    Observable<ImageUpdateModel> getImagesUpload(@Query("params") String params, @Part List<MultipartBody.Part> partList);// 贷款认证,信用卡认证,贷款店铺,产品等图片上传

    @POST("creditcard/shop/shopWorkCardImages")
    Observable<WorkCardImagesModel> getWorkCardImagesCredit(@Query("params") String params);//资质认证状态,及内容 信用卡

    @POST("salesScoreList")
    Observable<ScoreInfoModel> getScoreList(@Query("params") String params);//积分明细

    @POST("salesRewardScore")
    Observable<RewardScoreModel> getRewardScore(@Query("params") String params);//积分赚取方式

    @POST("loans/product/myproductList")
    Observable<MyproductInfoModel> getMyproductList(@Query("params") String params);// 我的产品列表,查找及翻页功能

    @POST("loans/product/productLoansRecommend")
    Observable<BaseModel> getMyRecommend(@Query("params") String params);// 推荐或取消

    @POST("loans/product/productLoansDelete")
    Observable<BaseModel> getMyDel(@Query("params") String params);//删除产品,即取消受理

    @POST("loans/product/productList")
    Observable<ProductLibInfoModel> getProductLib(@Query("params") String params);//产品库列表,查找及翻页功能

    @POST("loans/product/productLoansSalesAdd")
    Observable<BaseModel> getProductAdd(@Query("params") String params);//添加,即受理,需后台管理员审核

    @POST("loans/product/productLoansError")
    Observable<BaseModel> submitError(@Query("params") String params);//纠错提交

    @POST("mySales.do")
    Observable<MyBusinessConModel> getMyBusinessCon(@Query("params") String params);//7我的业务顾问

    @POST("myExtensionApi/myExtension.do")
    Observable<MinePromotionModel> getPromotionData(@Query("params") String params);//我的推广页面数据

    @POST("kbbApp/getMsg.do")
    Observable<InviteShareDesModel> getInviteShareDes(@Query("params") String params);//邀请好友分享提示语

}
